package com.moli.iov.handle.alarm.service;

import com.moli.iov.handle.alarm.model.dto.AlarmDto;
import com.moli.iov.handle.alarm.model.dto.AlarmOnLineDto;
import com.moli.iov.handle.alarm.model.dto.DisarmAlarmDto;
import com.moli.iov.handle.alarm.model.po.AlarmInfo;

/**
 * <p>
 * 报警 请求业务
 * </p>
 *
 * @author: zql
 * @Date: 2019/2/18 10:08
 */
public interface IAlarmInfoRequestService {

    /**
     * 报警
     * @param alarmDto
     */
    void alarm(AlarmDto alarmDto);

  /**
   * 更新忽略为报警中
   * @param alarmDto
   * @return
   */
  boolean updateOfIgnore(AlarmDto alarmDto);

    /**
     * 报警后续业务
     * @param alarmDto
     */
    void alarmAfterBiz(AlarmDto alarmDto);

    /**
     * 添加报警 组装数据
     * @param alarmDto
     * @return
     */
    AlarmInfo assemblyAlarmInfo(AlarmDto alarmDto);

    /**
     * 取消报警
     * @param disarmAlarmDto
     */
    void disarmAlarm(DisarmAlarmDto disarmAlarmDto);

    /**
     * 取消报警组装数据
     * @param disarmAlarmDto
     * @return
     */
    AlarmInfo assemblyDisarmAlarmInfo(DisarmAlarmDto disarmAlarmDto);

    /**
     * 取消报警 后续 业务 处理
     * @param disarmAlarmDto
     */
    void disarmAlarmAfterBiz(DisarmAlarmDto disarmAlarmDto);

    /**
     * 取消报警
     * @param alarmInfo
     */
    void updateAlarm(AlarmInfo alarmInfo);

    /**
     * 添加离线集合
     * @param alarmOnLineDto
     */
    void addOffline(AlarmOnLineDto alarmOnLineDto);


    /**
     * 判断当前报警编码 是否正在报警
     * @param vin
     * @param alarmCode
     * @return
     */
    boolean checkOfIsAlarming(String vin, int alarmCode);

    /**
     * 根据报警编码 查询 正在报警的数据
     * @param vin
     * @param alarmCode
     * @return
     */
    AlarmInfo getAlarmInfo(String vin, int alarmCode);


}
